package com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo;


import com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo.orderFees.OrderFeesVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/*
 * 生成账单的接口
 *
 * */
@Data
public class OrderBaseVo {
    /**
     * 合同开始时间
     */
    @Schema(description = "合同开始时间")
    private LocalDate startTime;

    /**
     * 合同结束时间
     */
    @Schema(description = "合同结束时间")
    private LocalDate endTime;

    /**
     * 租金
     */
    @Schema(description = "租金")
    private BigDecimal rent;

    /**
     * 押金
     */
    @Schema(description = "押金")
    private BigDecimal deposit;

    /**
     * 收款周期类型 1月付 3 季付 6 半年付 12 半年付  0 其他
     */
    @Schema(description = "收款周期类型 1月付 3 季付 6 半年付 12 半年付  0 其他")
    private Integer collectionCycleType;

    /**
     * 是否按自然月生成账 FALSE 否   TRUE 是
     */
    @Schema(description = "是否按自然月生成账 FALSE 否   TRUE 是")
    private Boolean isNatureMonth = Boolean.FALSE;

    /**
     * 月份
     */
    @Schema(description = "月份")
    private Integer month = 1;

    /**
     * 收款类型 0 提前收租 1 固定当月日期 2 固定上月日期
     */
    @Schema(description = "收款类型 0 提前收租 1 固定当月日期 2 固定上月日期")
    private Integer rentType;

    /**
     * 收款日期
     */
    @Schema(description = "收款日期")
    private Integer day;

    /*优惠类型("cycle", u"周期性优惠"),("once", u"一次性优惠")*/
    @Schema(name = "discount_sort")
    private String discountSort;
    /*一次性优惠金额计入首期或末期账单("first", u"计入首期账单"),("last", u"计入末期账单")*/
    @Schema(name = "discount_order")
    private String discountOrder;
    /*优惠方式 rate 优惠比例 % | amount 优惠金额 元/月 | once 优惠金额 元*/
    @Schema(name = "discount_type")
    private String discountType;
    /*优惠值*/
    @Schema(name = "discount_value")
    private BigDecimal discountValue;

    /**
     * 叠加优惠类型：周期性（cycle）, 一次性（once）
     */
    private String extraDiscountSort;
    /**
     * 周期性优惠优惠方式：按账期（order）,按月租金(rent)
     */
    private String extraDiscountType;
    /**
     * 一次性优惠计入账单：计入首次(first), 计入末次(last)
     */
    private String extraDiscountOrder;
    /**
     * 周期性优惠值
     */
    private BigDecimal extraDiscountValue;


    /**
     * 费项
     */
    @Schema(description = "费项")
    private List<OrderFeesVo> orderFeesVo;


}
